`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date:    08:47:27 08/27/2012 
// Design Name: 
// Module Name:    sincronizador 
// Project Name: 
// Target Devices: 
// Tool versions: 
// Description: 
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
//////////////////////////////////////////////////////////////////////////////////

//modulo de sincronizacion para las entradas de los botones 

module sincronizador(
    reprogram_i,
    reset_i,
	 clk_i,
    reprogram_o,
    reset_o
    );
	 
	 input reprogram_i,reset_i,clk_i; //definicion de variables de entrada y salida
	 output reprogram_o,reset_o;
	 
	 reg reprogram_o,reset_o,resflip1,resflip2,reproflip1,reproflip2;
	 
	 initial begin 						//inicializacion de variables	
		reprogram_o=0;
		reset_o=0;
		resflip1=0;
		resflip2=0;
		reproflip1=0;
		reproflip2=0;
		end
	 
	 always@(posedge clk_i) begin 			//	flip flops de sincronizacion de las variables
			resflip1<=reset_i;
			resflip2<=resflip1;
			reset_o<=resflip2;
			reproflip1<=reprogram_i;
			reproflip2<=reproflip1;
			reprogram_o<=reproflip2;		
	end
		 
	 
	 


endmodule
